{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://raw.githubusercontent.com/Qiskit/qiskit-tutorials/master/images/qiskit-heading.png\" alt=\"Note: In order for images to show up in this jupyter notebook you need to select File => Trusted Notebook\" width=\"500 px\" align=\"left\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*Quantum Emoticon*_ \n",
    "\n",
    "The latest version of this notebook is available on https://github.com/QISKit/qiskit-tutorial.\n",
    "\n",
    "For more information about how to use the IBM Q Experience (QX), consult the [tutorials](https://quantumexperience.ng.bluemix.net/qstage/#/tutorial?sectionId=c59b3710b928891a1420190148a72cce&pageIndex=0), or check out the [community](https://quantumexperience.ng.bluemix.net/qstage/#/community).\n",
    "\n",
    "***\n",
    "### Contributors\n",
    "James R. Wootton, University of Basel; \n",
    "Anna Phan, IBM Research"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This program aims to accomplish what \"Hello World\" does for classical programming.\n",
    "\n",
    "Specifically:\n",
    "* It is simple;\n",
    "* It performs an understandable and relatable task;\n",
    "* It demonstrates simple principles of the programming language;\n",
    "* It shows how to produce and look at an output."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Anything that can be done with bits can be done with qubits. Simply leave a qubit in its initialized value for the state *0*, or use an operation with the effect of a NOT gate (such as *X* or *Y*) to rotate it to a *1*. Each qubit then becomes a bit, allowing us to implement \"Hello, World!\" directly on a quantum computer.\n",
    "\n",
    "In practice, it is not so straightforward. ASCII encoding of \"Hello, World!\" requires over 100 bits, and therefore over 100 qubits. Current quantum devices are not yet large enough for the job.\n",
    "\n",
    "However, two ASCII characters require only 14 (qu)bits. Writing an emoticon like ;) can therefore be done using *ibmq_16_melbourne*.\n",
    "\n",
    "The string corresponding to ;) is\n",
    "    \n",
    "    ;)  =  '01110110101001'\n",
    "\n",
    "To prepare this state we can perform an *X* on qubits 0, 3, 5, 7, 8, 10, 11, 12. Here we number the bits from 0 to 13, from right to left.\n",
    "\n",
    "Of course, just writing a bit string in some qubits isn't very quantum. Instead we can prepare a superposition of two different emoticons. We choose ;) and 8), which correspond to the bit strings\n",
    "\n",
    "    8)  =  '01110000101001'\n",
    "    ;)  =  '01110110101001'\n",
    "\n",
    "Note that these strings differ only on bits 7 and 8. It is therefore only these on which the superposition must be prepared. The superposition will be of the '00' of 8), and the '11' of ;) , and so will be a standard [Bell state](https://github.com/QISKit/qiskit-tutorial/blob/master/community/terra/qis_intro/entanglement_introduction.ipynb).\n",
    "\n",
    "We'll now implement this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:40:37.858346Z",
     "start_time": "2018-09-25T16:40:37.834896Z"
    }
   },
   "outputs": [],
   "source": [
    "from qiskit import ClassicalRegister, QuantumRegister\n",
    "from qiskit import QuantumCircuit, execute\n",
    "from qiskit.tools.visualization import plot_histogram\n",
    "from qiskit import IBMQ, BasicAer\n",
    "from qiskit.tools.jupyter import *\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:40:40.239920Z",
     "start_time": "2018-09-25T16:40:40.234444Z"
    }
   },
   "outputs": [],
   "source": [
    "# set up registers and program\n",
    "qr = QuantumRegister(14)\n",
    "cr = ClassicalRegister(14)\n",
    "qc = QuantumCircuit(qr, cr)\n",
    "\n",
    "# rightmost seven (qu)bits have ')' = 0101001\n",
    "qc.x(qr[0])\n",
    "qc.x(qr[3])\n",
    "qc.x(qr[5])\n",
    "\n",
    "# second seven (qu)bits have superposition of\n",
    "# '8' = 0111000\n",
    "# ';' = 0111011\n",
    "# these differ only on the rightmost two bits\n",
    "qc.h(qr[8]) # create superposition on 9\n",
    "qc.cx(qr[8],qr[7]) # spread it to 8 with a CNOT\n",
    "qc.x(qr[10])\n",
    "qc.x(qr[11])\n",
    "qc.x(qr[12])\n",
    "\n",
    "# measure\n",
    "for j in range(14):\n",
    "    qc.measure(qr[j], cr[j])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll now run the circuit on the simulator for 128 shots (so we don't need to wait in the  queue for an actual quantum computer) and plot the results. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:40:53.411141Z",
     "start_time": "2018-09-25T16:40:43.608027Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "backend = BasicAer.get_backend('qasm_simulator')\n",
    "shots_sim = 128\n",
    "\n",
    "job_sim = execute(qc, backend, shots=shots_sim)\n",
    "stats_sim = job_sim.result().get_counts()\n",
    "\n",
    "plot_histogram(stats_sim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above results in *stats* tell us how many times each bit string was found as a result. To make our emoticon, we convert the bit strings into ASCII characters. We also calculate the fraction of shots for which each result occurred. The most common results are then printed to screen.\n",
    "\n",
    "This gives us a list of characters and probabilities. But that isn't very fun. For something more visual, we use matplotlib to create an image in which the all the characters included in the result are printed on top of each other. The alpha channel of each character is set to the fraction of shots for which that result occurred. For our simulator results, this is approximately equally split between 8) and ;).\n",
    "\n",
    "We will write this transformation and visualization from results to ASCII characters as a function, so we can reuse it later when we run the smiley circuit on the *ibmqx5* device. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:40:53.585248Z",
     "start_time": "2018-09-25T16:40:53.413341Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5703125\t;)\n",
      "0.4296875\t8)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rc('font', family='monospace')\n",
    "\n",
    "def plot_smiley (stats, shots):\n",
    "    for bitString in stats:\n",
    "        char = chr(int( bitString[0:7] ,2)) # get string of the leftmost 7 bits and convert to an ASCII character\n",
    "        char += chr(int( bitString[7:14] ,2)) # do the same for string of rightmost 7 bits, and add it to the previous character\n",
    "        prob = stats[bitString] / shots # fraction of shots for which this result occurred\n",
    "        # create plot with all characters on top of each other with alpha given by how often it turned up in the output\n",
    "        plt.annotate( char, (0.5,0.5), va=\"center\", ha=\"center\", color = (0,0,0, prob ), size = 300)\n",
    "        if (prob>0.05): # list prob and char for the dominant results (occurred for more than 5% of shots)\n",
    "            print(str(prob)+\"\\t\"+char)\n",
    "    plt.axis('off')\n",
    "    plt.show()\n",
    "    \n",
    "plot_smiley(stats_sim, shots_sim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll now run the smiley circuit on *ibmq_16_melbourne*, after checking that the device is online. Given the noise on the device, our smiley won't be as clean as our previous run on the simulator.\n",
    "\n",
    "First we need to set up the credentials required to access the devices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "IBMQ.load_accounts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then we can send the job, keep track of its progress, and get the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:40:58.663189Z",
     "start_time": "2018-09-25T16:40:58.280586Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a0b5cd49c6a1442481c66458169b1e44",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "VBox(children=(HTML(value=\"<p style='font-size:16px;'>Job Status : job is being initialized </p>\"),))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%qiskit_job_status\n",
    "backend = IBMQ.get_backend('ibmq_16_melbourne')\n",
    "shots_device = 1000\n",
    "job_device = execute(qc, backend, shots=shots_device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T16:57:46.141411Z",
     "start_time": "2018-09-25T16:57:45.093209Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.182\t8)\n",
      "0.141\t;)\n",
      "0.055\t8\t\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "stats_device = job_device.result().get_counts()\n",
    "plot_smiley(stats_device, shots_device)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And there you have it. A program to take one of the world's most advanced devices and made a smiley with it. A quantum smiley!\n",
    "\n",
    "An alternative introduction to this program can be found [here](https://medium.com/@decodoku/making-a-quantum-computer-smile-cee86a6fc1de)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "48px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
